Лабораторная работа №3 Ознакомление и приобретение навыков работы со средой разработки Visual DSP++ Цель работы: Изучение интерфейса, процедур создания проекта (на основе готовой программы), его компиляции и запуска в среде разработки Visual DSP++. Ознакомление с особенностями реализации цифровых фильтров с использованием целочисленной арифметики. Лабораторное задание 1. В среде MATLAB с помощью оболочки fdatool спроектируйте ФНЧ Баттерворта 4-го порядка с заданными преподавателем частотами дискретизации и среза. Приведите фильтр к односекционному виду (Edit>Convert to Single Section). Экспортируйте фильтр в среду MATLAB (File>Export). 2. Полученные коэффициенты вставьте в программу lr3.m (текст программы в приложении), и промоделируйте работу фильтра. 3. Создайте проект в среде Visual DSP++ (Project>New, задаете название проекта – iirdirect, выбираете процессор ADSP-2191, поддержку Visual DSP++ kernel подключать не надо). 4. Откройте дополнительное окно просмотра состояния конвейера (View>Debug windows>Pipeline viewer) и расположите его внизу экрана (во всю ширину экрана). 5. Откройте дополнительное окно оценки производительности (Tools>Linear Profiling>New Profile). 6. Добавьте в проект файл с исходным текстом программы, реализующей цифровой фильтр в прямой форме (текст программы в приложении) (в окне проекта слева Source Files>Add File(s) to Folder). 7. Вставьте в текст программы коэффициенты, рассчитанные на этапе выполнения пункта 1 задания. Обратите внимание, что у всех коэффициентов знаменателя, кроме 0го. нужно поменять знак. 8. Откомпилируйте и запустите программу (клавиши F7 и F5). Сравните полученные числа с результатом выполнения пункта 2 задания. Запишите количество тактов, затраченных на выполнение программы (окно Linear Profiling Results). 9. Замените в программе отмеченные в комментариях строки на варианты с целыми числами и повторите пункт 8. Во сколько раз быстрее стала работать программа? Какова максимальная погрешность результата? 10. Повторите пункты 3, 6-9 для программы, реализующей цифровой фильтр в канонической форме. Сравните погрешность результатов для целочисленных вариантов фильтров в прямой и канонической форме. Содержание отчета. 1. Передаточная функция ФНЧ (п.1) 2. Результат работы фильтра по п.2, результаты работы фильтров в целочисленных вариантах для прямой и канонической формы. Максимальные погрешности для соответствующих вариантов. 3. Оценки быстродействия фильтров при исполнении на симуляторе процессора ADSP-2191. 4. Приведите характерный пример неэффективной работы конвейера из-за команды перехода. Приложение Программа для среды MATLAB для расчета реакции цифрового фильтра Lr3.m x=[2,1,2,-1,2,1,2,-1]*100 Num=[ ];% числитель Den=[ ];% знаменатель Num=round(Num*64) Den=round(Den*64) figure(1),stem(abs(fft(x))) y=filter(Num,Den,x) figure(2),stem(abs(fft(y))) Программа на языке C, реализующая цифровой фильтр в прямой форме #include "stdio.h" #define N 5 #define M 5 #define K 8+M-1 void main(void) { int b[N]={ };//числитель int a[M]={ };//знаменатель (у всех коэффициентов кроме 0го нужно поменять знак ) int x[K]={0,0,0,0,200,100,200,-100,200,100,200,-100}; float y[K]={0,0,0,0};//для варианта с числами с плавающей точкой //int y[K]={0,0,0,0};//для целочисленного варианта int k,n,m; for(k=M-1;k